package org.Yiran.timetale_re.network;

import net.minecraft.network.FriendlyByteBuf;
import net.minecraftforge.network.NetworkEvent;
import java.util.function.Supplier;

/**
 * 网络数据包基础接口
 * <p>
 * 定义了所有网络数据包必须实现的基本方法，用于在网络中传输数据。
 * 实现此接口的类可以处理客户端与服务端之间的数据通信。
 * </p>
 * 
 * @author Yiran
 */
public interface SimplePacket {
    
    /**
     * 将数据包内容编码到缓冲区中
     * <p>
     * 此方法用于将数据包中的数据序列化到网络缓冲区，以便通过网络传输。
     * </p>
     * 
     * @param buffer 网络字节缓冲区，用于存储序列化后的数据
     */
    void encode(FriendlyByteBuf buffer);
    
    /**
     * 处理接收到的数据包
     * <p>
     * 此方法在接收端被调用，用于处理从网络接收到的数据包。
     * 根据网络上下文确定是在客户端还是服务端执行相应逻辑。
     * </p>
     * 
     * @param context 网络事件上下文，包含处理数据包所需的信息和环境
     */
    void handle(Supplier<NetworkEvent.Context> context);
}